//
// Created by wkm on 2023-12-11.
//

#ifndef MYSYSTEMCLEARNING_REG_SPSR_H
#define MYSYSTEMCLEARNING_REG_SPSR_H

#include <string>
#include "systemc.h"
#include "dff.h"

#define REG_SIZE 8
using namespace std;

SC_MODULE(reg_spsr) {
    sc_in<bool> clk;
    sc_out<bool> reset;

    sc_in<bool> d_in[REG_SIZE];
    sc_out<bool> d_out[REG_SIZE];

    dff *udff[REG_SIZE];
    int i;
    string ff_name;

    SC_CTOR(reg_spsr) {
        // 用for循环来创建所有实例
        for (i = 0; i < REG_SIZE; i++) {
            // 构造触发器的名称
            ff_name = "udff" + i;
            // 创建一个实例
            udff[i] = new dff(ff_name.c_str());
            // 把它连接起来
            (*udff[i])(clk, reset, d_in[i], d_out[i]);
        }
    }
};

#endif //MYSYSTEMCLEARNING_REG_SPSR_H
